package com.pe.pgn.clubpgn.webapp.controller.canje;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import com.pe.pgn.clubpgn.domain.beans.BNDocumentoMovArticulo;

public class TicketPdfUtil {
	
    public static ByteArrayOutputStream createPdf(BNDocumentoMovArticulo bnCanje) throws IOException, DocumentException {
  
    	Document document = new Document();
    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
    	PdfWriter.getInstance(document, baos);
    	document.open();
    	document.add(createFirstTable(bnCanje));
    	document.close();
    	return baos;
    }
    
    public static PdfPTable createFirstTable(BNDocumentoMovArticulo bnCanje) {
    	
    	int border = 0;
    	boolean tieneBorde = Boolean.TRUE;
    	PdfPTable table = new PdfPTable(4);
    	
		createPdfPCell(table, bnCanje.getDeAlmacen(), 4, border, tieneBorde);
		createPdfPCell(table, "----------------------------------------", 4, border, tieneBorde);
		
		String estado = "TICKET";
//		if(bnCanje.getStCanje().equalsIgnoreCase(CLPConstantes.ST_FALSO)){
//			estado = estado.concat(" - ").concat("ANULADO");
//		}
		createPdfPCell(table, estado, 4, border, tieneBorde); //aqui diria ticket anulado si fue anulado
		createPdfPCell(table, "----------------------------------------", 4, border, tieneBorde);
		
		createPdfPCell(table, "Fecha: ", 1, border, tieneBorde);
		createPdfPCell(table, bnCanje.getDaFechaDocumento(), 1, border, tieneBorde);
		
		createPdfPCell(table, " ", 1, border, tieneBorde);
		createPdfPCell(table, " ", 1, border, tieneBorde);
    	
		createPdfPCell(table, "Ticket: ", 1, border, tieneBorde);
		
		String ticket = "";
		if(bnCanje.getCodCanje() == null){
			ticket = bnCanje.getNuSerie() == null ? "" : bnCanje.getNuSerie();
			ticket = ticket.concat("-");
			ticket = bnCanje.getNuDocumento() == null ? ticket : ticket.concat(bnCanje.getNuDocumento());			
		} else{
			ticket = bnCanje.getCodCanje();
		}
		createPdfPCell(table, ticket, 1, border, tieneBorde);
		
		createPdfPCell(table, " ", 1, border, tieneBorde);
		createPdfPCell(table, " ", 1, border, tieneBorde);
		
		
		createPdfPCell(table, "Cliente: ", 1, border, tieneBorde);
		createPdfPCell(table, bnCanje.getDeCliente(), 3, border, tieneBorde);
    	
		createPdfPCell(table, "---------TRANSFERENCIA GRATUITA---------", 4, border, tieneBorde);
    	
		createPdfPCell(table, "Premio:", 1, border, tieneBorde);
		createPdfPCell(table, bnCanje.getDeCodigoPremio(), 1, border, tieneBorde);
		
		createPdfPCell(table, "P. Ref:", 1, border, tieneBorde);
		String vaPrecioPremio = bnCanje.getVaPrecioPremio() == null ? "0.00" : ""+bnCanje.getVaPrecioPremio();
		createPdfPCell(table, "S/. ".concat(vaPrecioPremio), 1, border, tieneBorde);
		
		
    	
		createPdfPCell(table, "Cantidad:", 1, border, tieneBorde);
		String vaCantidad = bnCanje.getVaCantidad() == null ? "0.00" : ""+bnCanje.getVaCantidad();
		createPdfPCell(table, vaCantidad, 1, border, tieneBorde);
    	
		createPdfPCell(table, "Puntos:", 1, border, tieneBorde);
		String vaPuntos = bnCanje.getVaPuntosPremio() == null ? "0" : ""+bnCanje.getVaPuntosPremio();
		createPdfPCell(table, vaPuntos, 1, border, tieneBorde);
		
		
		
		createPdfPCell(table, "Total Puntos:", 1, border, tieneBorde);
		String vaPuntosTotales = bnCanje.getVaPuntosTotales() == null ? "0" : ""+bnCanje.getVaPuntosTotales();
		createPdfPCell(table, vaPuntosTotales, 1, border, tieneBorde);
    	
    	createPdfPCell(table, "Total:", 1, border, tieneBorde);
    	String vaPrecioTotalpagar = bnCanje.getVaPrecioTotalpagar() == null ? "0.00" : ""+bnCanje.getVaPrecioTotalpagar();
    	createPdfPCell(table, "S/. ".concat(vaPrecioTotalpagar), 1, border, tieneBorde);
    	
    	
    	
    	createPdfPCell(table, "----------------------------------------", 4, border, tieneBorde);
    	
    	createPdfPCell(table, "Total a pagar: ", 1,  border, tieneBorde);
    	createPdfPCell(table, "S/. ".concat(vaPrecioTotalpagar), 3, border, tieneBorde);
    	
    	createPdfPCell(table, "----------------------------------------", 4, border, tieneBorde);
    	
    	createPdfPCell(table, "Efectivo: ", 1,  border, tieneBorde);
    	createPdfPCell(table, "S/. ".concat(vaPrecioTotalpagar), 3,  border, tieneBorde);

    	return table;
    }
    
	private static void createPdfPCell(PdfPTable table, String phrase, int colspan,
			int border, boolean tieneBorde) {
		PdfPCell cell = new PdfPCell(new Phrase(phrase));
    	cell.setColspan(colspan);
    	
    	if(tieneBorde){
    		cell.setBorder(border);
    	}
    	table.addCell(cell);
	}
}
